const API_URL = "https://h5.qunlongwushou.com/durian-mobile-platform";
// const API_URL = "https://wlnimsc0.netease.im/";

function Get(url, params) {
    var token = wx.getStorageSync('token') ? wx.getStorageSync('token') : [];
    let promise = new Promise(function (resolve, reject) {

        wx.request({

            url: API_URL + url,

            data: params,

            method: 'GET',

            header: {
                'Content-Type': 'application/json',
                // 'token': token,
                'DURIANSESSIONID':token
            },
            success: res => {

                resolve(res.data);

            },

            fail: res => {

                reject(res.data)

            }

        })

    });
    return promise

}

function Post(url, params) {
    var token = wx.getStorageSync('token') ? wx.getStorageSync('token') : [];
    let promise = new Promise(function (resolve, reject) {
        wx.request({
            url: API_URL + url,
            data: params,
            method: 'POST',
            header: {
                'content-Type': 'application/json',
                // 'token': token,
                'DURIANSESSIONID':token
            },
            success: res => {
                resolve(res.data);

            },

            fail: res => {

                reject(res.data)

            }

        })

    });

    return promise

}

function JsonPost(url, params) {
    var token = wx.getStorageSync('token') ? wx.getStorageSync('token') : [];
    let promise = new Promise(function (resolve, reject, token) {

        wx.request({

            url: API_URL + url,

            data: JSON.stringify(params),

            method: 'POST',

            header: {
                'Content-Type': 'application/json',
                // 'token': token,
                'DURIANSESSIONID':token

            },

            success: res => {

                resolve(res.data);

            },

            fail: res => {

                reject(res.data);

            }

        })

    });

    return promise

}
// 判断一个字符串是不是一个数
function isNumber(val) {
    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if (regPos.test(val) || regNeg.test(val)) {
        return true;
    } else {
        return false;
    }
}

//验证手机号
function iphoneFn(num) {
    var reg = /(1[3-9]\d{9}$)/;
    if (reg.test(num)) {
        return true;
    } else {
        wx.showToast({
            title: "请输入正确的手机号",
            icon: "none"
        });
        return false;
    }
}
// 函数参数必须是字符串，因为二代身份证号码是十八位，而在javascript中，十八位的数值会超出计算范围，造成不精确的结果，导致最后两位和计算的值不一致，从而该函数出现错误。
// 详情查看javascript的数值范围
function checkIDCard(idcode) {
    // 加权因子
    var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    // 校验码
    var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

    var code = idcode + "";
    var last = idcode[17];//最后一位

    var seventeen = code.substring(0, 17);

    // ISO 7064:1983.MOD 11-2
    // 判断最后一位校验码是否正确
    var arr = seventeen.split("");
    var len = arr.length;
    var num = 0;
    for (var i = 0; i < len; i++) {
        num = num + arr[i] * weight_factor[i];
    }

    // 获取余数
    var resisue = num % 11;
    var last_no = check_code[resisue];

    // 格式的正则
    // 正则思路
    /*
    第一位不可能是0
    第二位到第六位可以是0-9
    第七位到第十位是年份，所以七八位为19或者20
    十一位和十二位是月份，这两位是01-12之间的数值
    十三位和十四位是日期，是从01-31之间的数值
    十五，十六，十七都是数字0-9
    十八位可能是数字0-9，也可能是X
    */
    var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;

    // 判断格式是否正确
    var format = idcard_patter.test(idcode);

    // 返回验证结果，校验码和格式同时正确才算是合法的身份证号码
    return last === last_no && format ? true : false;
}
//验证邮箱
function emailFn(num) {
    var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
    if (reg.test(num)) {
        return true;
    } else {
        wx.showToast({
            title: "请输入正确的邮箱",
            icon: "none"
        });
        return false;
    }
}
/**
 * 小数点后几位四舍五入
 * num 需要处理的数
 * n 处理后保留小数点后几位
 *
 */
function getFloat(num, n) {
    n = n ? parseInt(n) : 0;
    if (n <= 0) {
        return Math.round(num);
    }
    num = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); //四舍五入
    num = Number(num).toFixed(n); //补足位数
    return num;
}

/**
 * 时间戳改日期，返回年月日时分秒
 * layout 1年-月-日 2时分秒 3年月日时分秒 4年 月 日(另一种格式)
 */
function timestampToTime(timestamp, layout) {
    var date = new Date(timestamp * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000
    var Y = date.getFullYear()
    var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1);
    var D = date.getDate();
    var h = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
    var m = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
    var s = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
    if (layout == 1) {
        return Y + "-" + M + "-" + D;
    } else if (layout == 2) {
        return h + ":" + m + ":" + s;
    } else if (layout == 3) {
        return Y + "-" + M + "-" + D + " " + h + ":" + m + ":" + s;
    } else if (layout == 4) {
        return Y + "年" + M + "月" + D + "日"
    } else if (layout == 5) {
        return Y + "-" + M + "-" + D
    } else if (layout == 6) {
        return M + "-" + D
    } else if (layout == 7) {
        return h + ":" + m
    } else if (layout == 8) {
        return Y + "-" + M + "-" + D + " " + h + ":" + m;
    }
}
// 获取当前年月日
function doHandleDate() {
    var myDate = new Date();
    var tYear = myDate.getFullYear();
    var tMonth = myDate.getMonth();
    var tDay = myDate.getDate()

    var m = tMonth + 1;
    var d = tDay + 1
    if (m.toString().length == 1) {
        m = "0" + m;
    }
    if (d.toString().length == 1) {
        d = "0" + d;
    }
    return tYear + '-' + m + '-' + d;
}
/**
 * 取倒计时（天时分秒）
 * datetimeTo 结束时间戳
 *
 */
function getTimeLeft(datetimeTo) {
    // 计算目标与现在时间差（毫秒）
    // let time1 = new Date(datetimeTo).getTime();
    let time1 = datetimeTo;
    let time2 = new Date().getTime();
    let mss = time1 - time2;

    // 将时间差（毫秒）格式为：天时分秒
    let days = parseInt(mss / (1000 * 60 * 60 * 24));
    let hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    let minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
    let seconds = parseInt((mss % (1000 * 60)) / 1000);

    return days + "天" + hours + "时" + minutes + "分" + seconds + "秒";
}
module.exports = {
    Get,
    Post,
    JsonPost,
    iphoneFn,
    emailFn,
    getFloat,
    timestampToTime,
    getTimeLeft,
    isNumber,
    doHandleDate
}